Conventional computer programming languages include algebraic modeling languages that allow for a user to enter equations consisting of numeric and symbolic terms. Entering and solving algebraic equations using software tools such as simulation software requires the user to work with variables. Traditionally, to work with variables, the user must define specific features of the variable to enable the computer program to work with the variable as the program executes. The user accomplishes this by declaring the variable, which at a minimum requires naming the variable and designating the dimension (e.g. length, time, mass) of the variable.
Process simulators typically have a standard library of equipment models such as pumps, valves, flowmeters, reactors, and the like that are accessed by users to build a model of their process. But if the user requires an equipment model that is non-standard or is related to a proprietary process, the equipment model is not present in the model library. This requires the user to describe the equipment model by, among other things, entering the equations and variables that describe the physics and chemistry of the process that relates to the equipment model. Describing the equipment model in this fashion can be tedious and error prone, and any help the simulator can provide to reduce user-error saves significant troubleshooting time.
Currently, interactive error messages can be provided to the user when an equation is dimensionally inconsistent. However, inferring the dimension of the variable currently requires the variable in question to exist on one side of an equation, and requires each individual variable and each dimension on the other side of the equation to be defined. Furthermore, to correct an error based on a dimension mismatch, the user may still have to search the equation extensively to determine whether the source of the error is in the equation (e.g., the user added two variables instead of multiplying them) or due to an erroneously entered variable. This is a difficult task, especially in the case where extensive algebraic equations modeling complicated processes are involved.